/*
 * @Author: junhuizhou
 * @Date: 2020-12-30 16:07:40
 * @LastEditor: junhuizhou
 * @LastEditTime: 2021-01-09 10:34:04
 * @Description: header
 * @FilePath: \fzhtq\include\ctltask.h
 */

#ifndef CTLTASK_H_
#define CTLTASK_H_

/**
 * @description: 主要控制任务
 * @algorithm: 采用喷气推力器进行姿态稳定
 * @param {double} euler
 * @param {double} eulerRate
 * @param {double} PS_PTime 喷气时间，单位ms
 * @return {*}
 */
void CtlTask(double euler[3], double eulerRate[3], double PS_PTime[10], double WhlSpdDsrd[4], double WhlSpdNow[4]);

/**
 * @description: 速率阻尼
 * @algorithm: 
 * @param {double} omega 三轴角速度
 * @param {double} pstime 喷气时间，单位ms
 * @return {*}
 */
void TaskRateDamp(double omega[3], double pstime[10]);

/**
 * @description: 动量轮启动
 * @algorithm: 
 * @param {*}
 * @return {*}
 */
void TaskMWStart();

/**
 * @description: 三轴稳定控制
 * @algorithm: 
 * @param {double} theta0
 * @param {double} omega0
 * @param {double} theta1 目标姿态[0,0,0]
 * @param {double} pstime 喷气时间，单位ms
 * @return {*}
 */
void Task3AixsCtl(double theta0[3], double omega0[3], double theta1[3], double pstime[10]);

/*单动量轮结构体*/
typedef struct
{
	double whlangmom;		/****单动量轮角动量****/
	double whlinertia;		/****单动量轮转动惯量*/
	double whlspdnow;		/****单动量轮当前转速 国际标准单位****/
	double whlspddsrd;		/****单动量轮期望转速****/
	double whltq;			/****单动量轮控制力矩****/
}mwheel;
/*四动量轮结构体*/
typedef struct
{
	mwheel mwhl1, mwhl2, mwhl3, mwhl4;
}mwheel4;

#endif
